StAX (Streaming API for XML) wurde mit Java 6.0 eingeführt. Die Schnittstelle steht in dem Ruf, SAX (Simple API for XML) und DOM (Document Object Model) überlegen zu sein. ZDNet wirft nachfolgend einen Blick auf die API, erklärt die Funktionsweise und liefert einige Code-Beispiele.
Eine kurze Einführung in StAX
XML-APIs sind traditionell entweder baum- oder ereignisbasiert. Bei baumbasierten APIs wird das gesamte Dokument als Baumstruktur in den Speicher gelesen. Damit hat die bearbeitende Anwendung wahlfreien Zugriff darauf. Bei ereignisbasierten XML-APIs reagiert die Anwendung auf empfangene Ereignisse, sobald sie auf bestimmte Elemente innerhalb des Quelldokuments stößt.
Baumbasierte APIs, etwa DOM, ermöglichen den wahlfreien Zugriff auf das Dokument. Ereignisbasierte APIs, beispielsweise SAX, benötigen jedoch weniger Speicherplatz und arbeiten normalerweise wesentlich schneller.
Diese beiden Zugriffsmethoden stellen also zwei entgegengesetzte Ansätze dar. Eine baumbasierte API gewährt unbegrenzten und wahlfreien Zugriff sowie Manipulationsmöglichkeiten. Die ereignisbasierte API durchläuft das Quelldokument dagegen nur ein einziges Mal.
StAX wurde als eine Art Zwischenstufe zwischen diesen beiden Extrempositionen entwickelt. Bei StAX besteht der programmiertechnische Einstiegspunkt in einem Cursor, der einen Punkt innerhalb des Dokuments repräsentiert. Die Anwendung bewegt diesen Cursor vorwärts, das heißt sie „zieht“ (pull) die Informationen nach Bedarf vom Parser ab. Dies unterscheidet sich von einer ereignisbasierten API, die die Daten eher zur Anwendung „schiebt“ (push). Das setzt voraus, dass sich die Anwendung den Status zwischen den Ereignissen gegebenenfalls merkt. So weiß sie jederzeit, an welcher Stelle innerhalb des Dokuments sie sich gerade befindet.
StAX verwendet ein Pull-Konzept. Folglich fragt der Entwickler Ereignisse ab, anstatt Ereignisinformationen vom XML-Parser automatisch an den Client schicken zu lassen (Push-Ansatz). Das führt letztlich zu einem natürlicheren, lesbareren Programmcode, ohne dass dies zu Lasten der Performance geht. StAX hat seine Wurzeln in einer Reihe inkompatibler Pull-APIs für XML. XMLPULL ist wohl die bekannteste davon.
So funktioniert die StAX-API
Die Kern-API von StAX besteht aus zwei Komponenten: der Event-Iterator-API und der Cursor-API. Anwendungen können diese APIs zum Lesen, Parsen und Schreiben von XML-Dokumenten verwenden.
Die Event-Iterator-API
Die Event-Iterator-API ist SAX sehr ähnlich. Sie hat zwei wichtige Schnittstellen: den XMLEventReader zum Parsen von XML und den XMLEventWriter zum Erzeugen von XML-Code.
Als Beispiel soll folgende einfache XML-Datei dienen:
Neueste Kommentare
2 Kommentare zu StAX: So parst man XML-Code mit Java
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Unleserliche Codepräsentation macht den Artikel zu einer Qual
Hallo,
dieser Artikel könnte vielleicht sehr nützlich sein (ich hätte die Info für ein Terminprojekt gerade dringend gebrauchen können).
Leider habe ich keine Lust, jedes Codebeispiel erst aus dem Scroll-Feld herauszukopieren und durch einen Beautifyer zu schicken, damit ich das Ganze nachvollziehen kann.
Wenn der Artikel bspw. auch druckbar sein soll, dann sollte man den Code schon qualifizierter präsentieren. Im Druck wird 1.) die Schmalspaltensicht beibehalten und zum Anderen nur der Viewport gezeigt. Alles andere wird abgeschnitten.
Diese Codepräsentation finde ich auf einer IT-lastigen Site wie ZDNet doch eher lächerlich!
AW: Unleserliche Codepräsentation macht den Artikel zu einer Qual
„Ich hätte die Info gerade dringend für ein Terminprojekt brauchen können, habe aber leider keine Lust die Codebeispiele rauszukopieren“
Haben Sie das auch Ihrem Auftraggeber so gesagt?
Der muss wohl schon froh sein, dass Sie Lust hatten, den Browser zu öffnen…